package com.indexingsystem.boss.admin.mapper;

import java.util.List;
import java.util.Set;

import org.apache.ibatis.annotations.Param;

import com.indexingsystem.boss.Vo.AuthRoleVo;
import com.indexingsystem.boss.Vo.RolesDropVo;
import com.indexingsystem.boss.Vo.RolesListVo;
import com.indexingsystem.boss.Vo.RolesVo;
import com.indexingsystem.boss.entity.Roles;
import com.indexingsystem.system.web.model.Role;

public interface RolesMapper {
	/**
	 * 通过角色id删除角色信息.
	 * 
	 * @param roleId
	 * @return
	 */
	int deleteByPrimaryKey(String roleId);

	/**
	 * 批量删除角色操作.
	 * 
	 * @param roleIdList
	 * @return
	 */
	int deleteRolesByIdBatch(@Param("list") List<String> list);

	/**
	 * 全量新增角色信息.
	 * 
	 * @param record
	 * @return
	 */
	int insert(Roles record);

	/**
	 * 带条件新增角色信息.
	 * 
	 * @param record
	 * @return
	 */
	int insertSelective(Roles record);
	
	
	/**
	 * 通过角色id集合批量获取角色列表离线升级数据包.
	 * @param list
	 * @return
	 */
	List<Roles> getRolesListByRoleIdList(@Param("list") List<String> list);

	/**
	 * 通过角色名称查询角色信息.
	 * 
	 * @param roleName
	 * @return
	 */
	Roles getRolesInfoByRoleName(String roleName);
	
	
	/**
	 * 通过角色code查询角色信息.
	 * @param roleCode
	 * @return
	 */
	Roles getRolesInfoByRoleCode(String roleCode);

	/**
	 * 查询角色列表.
	 * 
	 * @return
	 */
	List<RolesListVo> selectRolesList(String queryCriteria);

	/**
	 * 新增用户管理所属角色下拉列表.
	 * 
	 * @return
	 */
	List<RolesDropVo> getRolesDropVoList();

	/**
	 * 通过角色id查询角色信息.
	 * 
	 * @param roleId
	 * @return
	 */
	Roles selectByPrimaryKey(String roleId);

	/**
	 * 带条件修改角色信息.
	 * 
	 * @param record
	 * @return
	 */
	int updateByPrimaryKeySelective(Roles record);

	/**
	 * 修改角色信息.
	 * 
	 * @param record
	 * @return
	 */
	int updateByPrimaryKey(Roles record);

	/**
	 * 查询用户已关联的角色列表信息。
	 * 
	 * @param userId
	 * @return
	 */
	List<Roles> getRoleInfoByUserId(String userId);

	/**
	 * 查询用户未关联的角色列表信息.
	 * 
	 * @param userId
	 * @return
	 */
	List<Roles> getCheckRoles(String userId);

	/**
	 * 获取角色总数量.
	 * 
	 * @return
	 */
	Integer getRoleCount(String queryCriteria);

	/**
	 * 根据用户ID查询角色（role），放入到Authorization里.
	 * 
	 * @param userId
	 * @return
	 */
	List<AuthRoleVo> findRoleByUserId(String userId);

	/**
	 * 获取角色列表.
	 * 
	 * @return
	 */
	List<Roles> getRolesList();

	/**
	 * 通过角色id查询角色授权url及角色code.
	 * 
	 * @param roleId
	 * @return
	 */
	List<AuthRoleVo> getRolesCodeOrPageUrl(String roleId);

	/**
	 * 通过用户名查询角色id集合.
	 * 
	 * @param userName
	 * @return
	 */
	Set<String> getRoleIdByUserName(String userName);
	
	/**
	 * 通过角色组id获取角色组角色列表.
	 * @param roleGroupId
	 * @return
	 */
	List<Roles> getRolesListByRoleGroupId(String roleGroupId);
	
	
    /**
     * 查询是否已设置自动分配的角色.
     * @param autoAssignment
     * @return
     */
	String getRolesInfoByAutoAssignment(Integer autoAssignment);

	List<Roles> getdhRolesList();
}